
new Vue({
    el: '#app',
    mixins: [Save],//组件配置文件，路径/utils/components.js
    data() {
        return {
            dataForm: {},
            childDataForm: [{}],//子表
            city: [],//地址数据

            orderStatusOptions: [
                { label: '待付款', value: '2' },
                { label: '待发货', value: '3' },
                { label: '配送中', value: '4' },
                { label: '已完成', value: '5' },
                { label: '订单取消', value: '6' },
                { label: '已退款', value: '7' }
            ]
        }
    },
    mounted() {
        /**
         * 组件配置文件中自动执行方法
         * 1.this.init(); //初始化文件
         * 2.this.getData(); //仅修改时执行，根据BOM配置属性查询
         */
        this.getList();
        
    },
    methods: {
        
        
        getList() {

            // 加载地址数据
            $.ajax({
                url: absolutepath() + 'admin/data/dtree.json',
                type: 'GET',
                success: (data) => {
                    this.city = data;
                },
            })
        },
        changeCity(val) {//更新省/市/区编号和详细地址
            if (val) {
                // 更新编号
                this.dataForm.ProvinceNumber = val.substring(0, 2) + '0000';
                this.dataForm.CityNumber = val.substring(0, 4) + '00';
                this.dataForm.CountyNumber = val;

                // 查找并拼接地址名称
                let Province = this.city.filter(i => i.code == this.dataForm.ProvinceNumber)[0];
                if (Province) {
                    let City = Province.children.filter(i => i.code == this.dataForm.CityNumber)[0];
                    if (City) {
                        let County = City.children.filter(i => i.code == val)[0];
                        if (County) {
                            // 拼接完整地址：省-市-区
                            this.dataForm.Detailed_Address = Province.name + '-' + City.name + '-' + County.name;
                            
                        }
                    }
                }
            } else {
                this.dataForm.ProvinceNumber = '';
                this.dataForm.CityNumber = '';
                this.dataForm.CountyNumber = '';
                this.dataForm.Detailed_Address = '';
            }
        },
        // 计算金额
        calculateAmount(index) {
            let item = this.childDataForm[index];
            if (!item) return;
            
            // 转换为数字
            let quantity = parseFloat(item.Quantity) || 0;//购买数量
            let refundableQuantity = parseFloat(item.Refundable_Quantity) || 0;//可退款
            let refundedQuantity = parseFloat(item.Refunded_Quantity) || 0;//已退款
            let salesUnitPrice = parseFloat(item.Sales_Unit_Price) || 0;//销售单价
            
            // 计算总金额：(购买数量 - 已退款数量) * 销售单价
            item.Amount = ((quantity - refundedQuantity) * salesUnitPrice).toFixed(2);
            
            // 计算已退款金额：已退款数量 * 销售单价
            item.Refunded_Amount = (refundedQuantity * salesUnitPrice).toFixed(2);
            
            // 计算可退款金额：可退款数量 * 销售单价
            item.Refundable_Amount = (refundableQuantity * salesUnitPrice).toFixed(2);
            
            // // 更新视图
            this.$set(this.childDataForm, index, item);
        },
        // 验证数量关系
        validateQuantity(index, field, value, callback) {
            let item = this.childDataForm[index];
            if (!item || value === '' || value === null || value === undefined) {
                callback();
                return;
            }
            
            let quantity = parseFloat(item.Quantity) || 0;
            // 根据当前编辑的字段，使用输入值或已保存的值
            let refundableQuantity = field === 'Refundable_Quantity' ? parseFloat(value) || 0 : (parseFloat(item.Refundable_Quantity) || 0);
            let refundedQuantity = field === 'Refunded_Quantity' ? parseFloat(value) || 0 : (parseFloat(item.Refunded_Quantity) || 0);
            let inputValue = parseFloat(value) || 0;
            
            // 根据字段类型进行验证
            if (field === 'Quantity') {
                // 购买数量 >= 已退款数量
                if (inputValue < refundedQuantity) {
                    callback(new Error('购买数量不能小于已退款数量'));
                    return;
                }
                // 购买数量 >= 可退款数量
                if (inputValue < refundableQuantity) {
                    callback(new Error('购买数量不能小于可退款数量'));
                    return;
                }
            } else if (field === 'Refundable_Quantity') {
                // 购买数量 >= 可退款数量
                if (inputValue > quantity) {
                    callback(new Error('可退款数量不能超过购买数量'));
                    return;
                }
                // 已退款数量 <= 可退款数量
                if (refundedQuantity > inputValue) {
                    callback(new Error('已退款数量不能超过可退款数量'));
                    return;
                }
            } else if (field === 'Refunded_Quantity') {
                // 购买数量 >= 已退款数量
                if (inputValue > quantity) {
                    callback(new Error('已退款数量不能超过购买数量'));
                    return;
                }
                // 已退款数量 <= 可退款数量
                if (inputValue > refundableQuantity) {
                    callback(new Error('已退款数量不能超过可退款数量'));
                    return;
                }
            }
            
            // 验证通过后，重新计算金额
            this.$nextTick(() => {
                this.calculateAmount(index);
            });
            
            callback();
            
        }
        
        
    }
    
})